#ifndef __MMNGR_PHYS_H_f57dbdf4eeb6488ba57a26c18f8494d3__
#define __MMNGR_PHYS_H_f57dbdf4eeb6488ba57a26c18f8494d3__

#include "stdint.h"
#include "bootinfo.h"
#include "string.h"

#define BYTES_PER_BLOCK 4096

uint32_t mmngr_block_first_free();
uint32_t mmngr_block_first_free_s(size_t size);
void *mmngr_phys_alloc();
void mmngr_phys_free(void *p);
void *mmngr_phys_alloc_blocks(size_t size);
void mmngr_phys_free_blocks(void *p,size_t size);
void mmap_set(uint32_t frame);
void mmap_unset(uint32_t frame);
void mmngr_block_init(uint32_t startAddress,size_t size);
void mmngr_block_deinit(uint32_t startAddress,size_t size);
void mmngr_phys_initialize(multiboot_info *bootInfo,uint32_t kernelSize);
uint32_t mmngr_phys_get_max_blocks();
uint32_t mmngr_phys_get_used_blocks();
uint32_t mmngr_phys_get_memory_size();

#endif